package com.cskaoyan.javse.oop2._1extends._6limit;

import java.util.concurrent.locks.ReadWriteLock;

/**
 * 继承的一些限制,思考以下问题:
 *      1.既然子类能够继承父类的所有成员,那么私有的成员呢?
 *          我们实测发现访问不到，有两种可能：
 *              a.确实没有继承
 *              b.继承了,但是没权限
 *       通过提供私有成员变量的getter方法,实测是可以继承的,但是没有访问权限.
 *
 *     2.构造器能继承吗?
 *          首先构造器不属于成员,并且构造器是为了自身成员变量赋值用的,给别的类继承毫无意义
 *          构造器不能继承
 *
 *     3.静态成员能不能继承呢?
 *          从实际的使用效果来看,子类是可以通过类名访问父类的静态成员的.
 *          但这实际上不属于继承,我们说的继承一般仅考虑普通成员,静态成员不一样.
 *
 * 开发中,想要使用继承,应该优先考虑两个类的关系,是否具有"is-a"关系
 * 老师是人,学生是人
 * 老师有姓名年龄属性,学生也有,为了复用成员,让学生继承老师,这显然不合适.
 *
 * @since 17:24
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        IPhone phone = new IPhone();
        // 'logo' has private access in 'com.cskaoyan.javse.oop2._1extends._6limit.Phone'
        // System.out.println(phone.logo);
        System.out.println(phone.getLogo());
        // 这两个price都是父类Phone的静态成员变量
        System.out.println(Phone.price);
        IPhone.price = 100;
        System.out.println(Phone.price);
    }
}

class Phone {
    private String logo;
    static double price;

    // 提供公共的Getter方法,该方法会被子类继承
    public String getLogo() {
        return logo;
    }
}

class IPhone extends Phone {

}
